﻿using System;
using System.Collections.Generic;
using Business.Entity.Contabil.Pessoa.ClassesRelacionadas;
using Business.Entity.Contabil.Pessoa.SubClass.Fornecedor;
using Business.Enum;
using Remotion.Linq.Collections;

namespace Business.Entity.Contabil.Pessoa
{
    [Serializable]
    public class Pessoa : IEntity
    {
        
        public virtual int Id { get; set; }
        public virtual DateTime DataCadastro { get; set; }
        public virtual Fornecedor Fornecedor { get; set; }
        /*
         * Define se é pessoa jurídica (J) ou pessoa física (F)
         */
        public virtual TipoPessoa TipoPessoa { get; set; }
        public virtual String Nome { get; set; }
        public virtual String Alias { get; set; }
        public virtual String CpfCnpj { get; set; }
        #region

        public virtual String InscricaoEstadual { get; set; }
        
        #endregion


        #region Informações de pessoa física.
        
        // Este campo deve ser exibido quando a pessoa for do tipo Física.
        public virtual Sexo Sexo { get; set; }
        
        #endregion
        
        public virtual IList<PessoaEndereco> Enderecos { get; set; }
        public virtual IList<ContatoTelefonico> ContatoTelefonicos { get; set; } 
        public virtual IList<EnderecoEletronico> EnderecoEletronicos { get; set; }

        public Pessoa()
        {
            Enderecos = new ObservableCollection<PessoaEndereco>();
            ContatoTelefonicos = new ObservableCollection<ContatoTelefonico>();
            EnderecoEletronicos = new ObservableCollection<EnderecoEletronico>();
        }

        public virtual Status Status { get; set; }
    }
}
